package com.draven.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.draven.entity.Sticky;

import java.util.List;

/**
 * 便签服务接口
 */
public interface StickyService {

    /**
     * 添加便签
     *
     * @param userId    用户ID
     * @param content   内容
     * @param color     颜色
     * @param positionX 位置X
     * @param positionY 位置Y
     * @param width     宽度
     * @param height    高度
     * @param isPinned  是否固定
     * @return ID
     */
    Long add(Long userId, String content, String color, Integer positionX, Integer positionY, Integer width, Integer height, Boolean isPinned);

    /**
     * 添加便签（使用实体类）
     *
     * @param sticky 便签实体
     * @return ID
     */
    Long add(Sticky sticky);

    /**
     * 修改便签
     *
     * @param id        ID
     * @param userId    用户ID
     * @param content   内容
     * @param color     颜色
     * @param positionX 位置X
     * @param positionY 位置Y
     * @param width     宽度
     * @param height    高度
     * @param isPinned  是否固定
     */
    void update(Long id, Long userId, String content, String color, Integer positionX, Integer positionY, Integer width, Integer height, Boolean isPinned);

    /**
     * 修改便签（使用实体类）
     *
     * @param sticky 便签实体
     */
    void update(Sticky sticky);

    /**
     * 删除便签
     *
     * @param id     ID
     * @param userId 用户ID
     */
    void delete(Long id, Long userId);

    /**
     * 获取便签详情
     *
     * @param id     ID
     * @param userId 用户ID
     * @return 便签信息
     */
    Sticky getDetail(Long id, Long userId);

    /**
     * 获取用户的所有便签
     *
     * @param userId 用户ID
     * @return 便签列表
     */
    List<Sticky> listByUserId(Long userId);

    /**
     * 分页查询便签
     *
     * @param userId   用户ID
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @return 分页结果
     */
    Page<Sticky> page(Long userId, Integer pageNum, Integer pageSize);
} 